var map;
var marker;
var clcMapType256;  //ImageMapType thuc vat, dong vat
var tileSize = 256;
var polyline = null;
var polygon = null;
var lpath; // day toa do de ve cac polyline
var gpath; // day toa do de ve cac polygon
var myEventListenerLine; // lang nghe su kien line
var myEventListenerArea; // lang nghe su kien area
var kt; // kiem tra su kien measureDistance hay measureArea duoc click
var lng;
var lat;
var latLng;
var infowindow;
var markersArrayTV = [];
var markersArrayDV = [];
var dataTV;
var dataDV;

function initialize() {
	var mapOptions = {
		zoom : 14,
		minZoom : 13,
		center : new google.maps.LatLng(15.958647, 108.49956),
		mapTypeId : google.maps.MapTypeId.ROADMAP
	};
	map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

	layerThucvat = function(coord, zoom) {
		var lURL = GetTileURL("tv_vitri", "thucvat", coord, zoom);
		return lURL;
	};
	layerDongvat = function(coord, zoom) {
		var lURL = GetTileURL("dv_vitri", "dongvat", coord, zoom);
		return lURL;
	};
	// add layer thuc vat va dong vat vao
	createLayers(layerThucvat, 0);
	createLayers(layerDongvat, 1);
	//lay cac diem hien thi thuc vat va dong vat
	ajaxGetPoint("thucvat");
	ajaxGetPoint("dongvat");
	
	// tao menu click chuot phai
	var contextMenuOptions={};
	contextMenuOptions.classNames={menu:'context_menu', menuSeparator:'context_menu_separator'};
	
	var menuItems=[];
	menuItems.push({className:'context_menu_item', eventName:'them_tv', label:'Thêm thực vật mới'});
	menuItems.push({className:'context_menu_item', eventName:'them_dv', label:'Thêm động vật mới'});
	contextMenuOptions.menuItems=menuItems;
	
	var contextMenu=new ContextMenu(map, contextMenuOptions);
	
	google.maps.event.addListener(map, 'rightclick', function(mouseEvent){
		contextMenu.show(mouseEvent.latLng);
	});
	
	google.maps.event.addListener(contextMenu, 'menu_item_selected', function(latLng, eventName){
		switch(eventName){
			case 'them_tv':
				themTVmoi(latLng.lat(), latLng.lng());
				break;
			case 'them_dv':
				themDVmoi(latLng.lat(), latLng.lng());
				break;
		}
	});
}

//create layers
function createLayers(layer, at){
	clcMapType256 = new google.maps.ImageMapType(
			{
				getTileUrl: layer, 
				isPng: true,
				tileSize: new google.maps.Size(256, 256)
			}
	);
	map.overlayMapTypes.setAt(at, clcMapType256);
}

function removeDisplayLayer(kt, layer){
	if(!kt && layer == 0) map.overlayMapTypes.setAt(0, null);
	else
		if(!kt && layer == 1) map.overlayMapTypes.setAt(1, null);
}

// creates the basic tile URL for WMS GetMap request for the given style, layer
// and coordinates
function GetTileURL(layerName, styleName, coord, zoom) {
	var lBbox = GetTileBoundingBox(coord, zoom);

	var lSRS = "EPSG:4326";
	var lURL = "http://localhost:8088/geoserver/wms?";
	lURL += "&REQUEST=GetMap";
	lURL += "&SERVICE=WMS";
	lURL += "&VERSION=1.1.1";
	lURL += "&LAYERS=" + layerName;
	lURL += "&STYLES=" + styleName;
	lURL += "&FORMAT=image/png";
	lURL += "&BGCOLOR=0xFFFFFF";
	lURL += "&TRANSPARENT=TRUE";
	lURL += "&SRS=EPSG:4326";
	lURL += "&BBOX=" + lBbox;
	lURL += "&WIDTH=" + tileSize;
	lURL += "&HEIGHT=" + tileSize;
	lURL += "&reaspect=false";
	lURL += "&buffer=50";
	return lURL;
}

function GetTileBoundingBox(coord, zoom) {
	// map projection for coordinate transformations
	var projection = map.getProjection();

	var zfactor = Math.pow(2, zoom);

	// getting corners points
	var lULP = new google.maps.Point(coord.x * tileSize / zfactor,
			(coord.y + 1) * tileSize / zfactor);
	var lLRP = new google.maps.Point((coord.x + 1) * tileSize / zfactor,
			coord.y * tileSize / zfactor);

	// getting corner points lat/lng coordinates
	var lUL = projection.fromPointToLatLng(lULP);
	var lLR = projection.fromPointToLatLng(lLRP);

	// getting string bounding box
	var lBbox = lUL.lng() + "," + lUL.lat() + "," + lLR.lng() + "," + lLR.lat();
	return lBbox;
}

// them thuc vat moi
function themTVmoi(lat, long){
	if(checkContentTV == 0) { contentTV = document.getElementById('thongTinTV'); checkContentTV++; }
	
	contentTV.querySelector('input[id="tvloai"]').value = "";
	contentTV.querySelector('input[id="tvho"]').value = "";
	contentTV.querySelector('option[id="tvchieucao"]').text = "";
	contentTV.querySelector('option[id="tvduongkinh"]').text = "";
	contentTV.querySelector('option[id="tvloaisinhtruong"]').text = "";
	contentTV.querySelector('option[id="tvdangsong"]').text = "";
	contentTV.querySelector('input[id="tvdongtay"]').value = "";
	contentTV.querySelector('input[id="tvnambac"]').value = "";
	contentTV.querySelector('input[id="tvlatatude"]').value = lat;
	contentTV.querySelector('input[id="tvlongatude"]').value = long;
	contentTV.querySelector('input[id="tvgtgo"]').checked = false;
	contentTV.querySelector('input[id="tvgtcanh"]').checked = false;
	contentTV.querySelector('input[id="tvgtthuoc"]').checked = false;
	contentTV.querySelector('input[id="tvgtvlxaydung"]').checked = false;
	contentTV.querySelector('input[id="tvgtthucongmynghe"]').checked = false;
	contentTV.querySelector('input[id="tvgtanduoc"]').checked = false;
	contentTV.querySelector('input[id="tvgtcaydoc"]').checked = false;
	contentTV.querySelector('input[id="tvgtchotinhdau"]').checked = false;
	contentTV.querySelector('input[id="tvgtnhua"]').checked = false;
	contentTV.querySelector('input[id="tvgtsoi"]').checked = false;
	contentTV.querySelector('input[id="tvgthuocnhuom"]').checked = false;
	contentTV.querySelector('input[id="tvgtcongdungkhac"]').checked = false;
	$(contentTV.querySelector('div[id="imaTV"]')).children().remove();
	contentTV.querySelector('textarea[id="tvdacdiem"]').value = "";
	contentTV.querySelector('input[id="bttvsua"]').style.display = 'none';
	contentTV.querySelector('input[id="bttvxoa"]').style.display = 'none';
	contentTV.style.display = '';
	infowindow = new google.maps.InfoWindow({
             content: contentTV,
             position : new google.maps.LatLng(lat, long),
             maxHeight: 800
         });
         
   infowindow.open(map);
}

// them dong vat moi
function themDVmoi(lat, long){
	if(checkContentDV == 0) { contentDV = document.getElementById('thongTinDV'); checkContentDV++; }
	
	contentDV.querySelector('input[id="dvloai"]').value = "";
	contentDV.querySelector('input[id="dvho"]').value = "";
	contentDV.querySelector('input[id="dvgioi"]').value = "";
	contentDV.querySelector('input[id="dvnganh"]').value = "";
	contentDV.querySelector('input[id="dvlop"]').value = "";
	contentDV.querySelector('input[id="dvbo"]').value = "";
	contentDV.querySelector('input[id="dvchi"]').value = "";
	contentDV.querySelector('input[id="dvnstrencan"]').checked = false;
	contentDV.querySelector('input[id="dvnstrencay"]').checked = false;
	contentDV.querySelector('input[id="dvnsduoinuoc"]').checked = false;
	
	$(contentDV.querySelector('div[id="imaDV"]')).children().remove();
	
	contentDV.querySelector('input[id="dvlatatude"]').value = lat;
	contentDV.querySelector('input[id="dvlongatude"]').value = long;
	contentDV.querySelector('input[id="dvthucan"]').value = "";
	contentDV.querySelector('textarea[id="dvdacdiem"]').value = "";
	contentDV.querySelector('input[id="btdvsua"]').style.display = 'none';
	contentDV.querySelector('input[id="btdvxoa"]').style.display = 'none';
	
	contentDV.style.display = '';
	infowindow = new google.maps.InfoWindow({
             content: contentDV,
             position : new google.maps.LatLng(lat, long),
             maxHeight: 800
         });
         
   infowindow.open(map);
}
// measure distance
function measureDistance(){
	kt = 0;
	document.getElementById('distance').innerHTML = "km";
	google.maps.event.removeListener(myEventListenerArea);
	var lineOptions = {
			strokeColor: '#FF0000',
			strokeOpacity: 0.8,
			strokeWeight: 2
			}
		polyline = new google.maps.Polyline(lineOptions);
		polyline.setMap(map);
		// add a listener for the click event
		myEventListenerLine = google.maps.event.addListener(map, 'click', addLatLngLine);
}

function addLatLngLine(event) {
	lpath = polyline.getPath();
	lpath.push(event.latLng);
	document.getElementById('measure').value = google.maps.geometry.spherical.computeLength(lpath.getArray()) / 1000;
}

// measure area
function measureArea() {
	kt = 1;
	document.getElementById('distance').innerHTML = "m2";
	google.maps.event.removeListener(myEventListenerLine);
	 var gonOptions = {
             fillColor: '#0000FF',
             fillOpacity: 0.4,
             strokeWeight: 0
           };
         polygon = new google.maps.Polygon(gonOptions);
         polygon.setMap(map);
         myEventListenerArea = google.maps.event.addListener(map, 'click', addLatLngArea);
}

function addLatLngArea(event) {
	gpath = polygon.getPath();
	gpath.push(event.latLng);

	if (gpath.getLength() > 2) {
		var garray = gpath.getArray();
		var area = google.maps.geometry.spherical.computeArea(garray);
		document.getElementById('measure').value = area;
	}
}

function destroyEvent(){
	google.maps.event.removeListener(myEventListenerLine);
	google.maps.event.removeListener(myEventListenerArea);
}

function undoLine() {
    if (kt == 0 && lpath) {
         lpath.pop();
		   document.getElementById('measure').value = google.maps.geometry.spherical.computeLength(lpath.getArray());
		}
    if(kt == 1 && gpath){
    	gpath.pop();
		   document.getElementById('measure').value = google.maps.geometry.spherical.computeArea(gpath.getArray());
    }
    if(kt == 2 && gpath) gpath.pop();
  }

function refresh(){
	if(polygon)
		polygon.setMap(null);  // lpath.length = 0;
	if(polyline)
		polyline.setMap(null); // gpath.length = 0;
	
	destroyEvent();
	
}

function printpage()
{
	window.print();
}

function ajaxGetPoint(name){
	$.ajax({
		type : "POST",
		url : "/culaocham/getData.doo",
		data: {name: name},
		cache : false,
		dataType : "json",
		success : function(data) {
			if(name == "thucvat") dataTV = data;
			else if(name == "dongvat") dataDV = data;
	},
	error : function(e) {
		alert('Error ' + e);
	}
	}); 
}

var imagetv = 'image/poi_1.svg';
var imagedv = 'image/poi_3.svg';
var latitude;
var longitude;
var checkActionTV=0;
function displayPoinThucVat(nametv){ 
	var checboxChecked = document.getElementById(nametv).checked;
	checkActionTV++;
	if(checboxChecked){
		if(nametv == "checkThucVat"){
			ajaxGetPoint("thucvat");
			deleteAllMarkerTV();
			displayAllMarkerTV();
		} else getLatLongPointTV(dataTV, nametv);
	} else {
		removeDisplayLayer(false, 0);
		if(nametv == "checkThucVat") {
			deleteAllMarkerTV();
		}
		else {
			if(checkActionTV == 1) displayAllMarkerTV();
			deleteMarkerTV(nametv);
		}
	}
}

var checkActionDV=0;
function displayPoinDongVat(namedv){ 
	var checboxChecked = document.getElementById(namedv).checked;
	checkActionDV++;
	if(checboxChecked){
		if(namedv == "checkDongVat"){
			ajaxGetPoint("dongvat");
			deleteAllMarkerDV();
			displayAllMarkerDV();
		} else getLatLongPointDV(dataDV, namedv);
	} else {
		removeDisplayLayer(false, 1);
		if(namedv == "checkDongVat") {
			deleteAllMarkerDV();
		}
		else {
			if(checkActionDV == 1) displayAllMarkerDV();
			deleteMarkerDV(namedv);
		}
	}
}

function displayAllMarkerTV(){
	for(var i=1; i<=dataTV.length; i++){
		latitude = dataTV[i][10];
		longitude = dataTV[i][9];
		addMarkerTV(latitude, longitude, dataTV[i][0]);
	}
}

function displayAllMarkerDV(){
	for(var i=1; i<=dataDV.length; i++){
		latitude = dataDV[i][11];
		longitude = dataDV[i][10];
		addMarkerDV(latitude, longitude, dataDV[i][0]);
	}
}

function getLatLongPointTV(data, name){
	for(var i=1; i<=data.length; i++){
		if(data[i][0] == name){
			latitude = data[i][10];
			longitude = data[i][9];
			addMarkerTV(latitude, longitude, data[i][0]);
		} else if(data[i][1] == name){
			latitude = data[i][10];
			longitude = data[i][9];
			addMarkerTV(latitude, longitude, data[i][0]);
		}
	}
}

function getLatLongPointDV(data, name){
	for(var i=1; i<=data.length; i++){
		if(data[i][0] == name){
			latitude = data[i][11];
			longitude = data[i][10];
			addMarkerDV(latitude, longitude, data[i][0]);
		} else if(data[i][1] == name){
			latitude = data[i][11];
			longitude = data[i][10];
			addMarkerDV(latitude, longitude, data[i][0]);
		}
	}
}

function addMarkerTV(latatude, longatude, name) {
		marker = new google.maps.Marker({
		    position: new google.maps.LatLng(latatude,longatude),
		    map: map,
		    icon: imagetv,
		    title: name
		  });
		google.maps.event.addListener(marker, 'click', function(e) {
			showMapInfoBoxMessage(name, latatude, longatude);
		});
		markersArrayTV.push(marker);
}

function addMarkerDV(latatude, longatude, name) {
	marker = new google.maps.Marker({
	    position: new google.maps.LatLng(latatude,longatude),
	    map: map,
	    icon: imagedv,
	    title: name
	  });
	google.maps.event.addListener(marker, 'click', function(e) {
		showMapInfoBoxMessage(name, latatude, longatude);
	});
	markersArrayDV.push(marker);
}

var contentTV; // thong tin (the div) cua thuc va dong vat
var contentDV; // thong tin (the div) cua thuc va dong vat
var checkContentTV = 0; // check da lay the div cua thuc vat chua
var checkContentDV = 0; // check da lay the div cua dong vat chua
var tvid;  // id thuc vat
var dvid;  // id thuc vat
var valiChoiceTV; // bien luu ca the thuc vat nao dang duoc xem thong tin
var valiChoiceTVLatOld;
var valiChoiceTVLongOld;
var valiChoiceDV; // bien luu ca the dong vat nao dang duoc xem thong tin
var valiChoiceDVLatOld;
var valiChoiceDVLongOld;
function showMapInfoBoxMessage(name, lat, long){
    var i = 1;
	while(i <= dataTV.length && dataTV[i][0] != name) i++;
	if(i <= dataTV.length){
		// Hien thi thong tin thuc vat (name) len infobox
		if(checkContentTV == 0) { contentTV = document.getElementById('thongTinTV'); checkContentTV++; }
		
		contentTV.querySelector('input[id="tvloai"]').value = dataTV[i][0];
		contentTV.querySelector('input[id="tvho"]').value = dataTV[i][1];
		contentTV.querySelector('option[id="tvchieucao"]').text = dataTV[i][2];
		contentTV.querySelector('option[id="tvduongkinh"]').text = dataTV[i][3];
		contentTV.querySelector('option[id="tvloaisinhtruong"]').text = dataTV[i][5];
		contentTV.querySelector('option[id="tvdangsong"]').text = dataTV[i][7];
		contentTV.querySelector('input[id="tvdongtay"]').value = dataTV[i][4].substring(0,dataTV[i][4].indexOf("m"));
		contentTV.querySelector('input[id="tvnambac"]').value = dataTV[i][4].substring(dataTV[i][4].indexOf(" "),dataTV[i][4].length - 1);
		contentTV.querySelector('input[id="tvlatatude"]').value = lat;
		contentTV.querySelector('input[id="tvlongatude"]').value = long;
		contentTV.querySelector('input[id="tvgtgo"]').checked = false;
		contentTV.querySelector('input[id="tvgtcanh"]').checked = false;
		contentTV.querySelector('input[id="tvgtthuoc"]').checked = false;
		contentTV.querySelector('input[id="tvgtvlxaydung"]').checked = false;
		contentTV.querySelector('input[id="tvgtthucongmynghe"]').checked = false;
		contentTV.querySelector('input[id="tvgtanduoc"]').checked = false;
		contentTV.querySelector('input[id="tvgtcaydoc"]').checked = false;
		contentTV.querySelector('input[id="tvgtchotinhdau"]').checked = false;
		contentTV.querySelector('input[id="tvgtnhua"]').checked = false;
		contentTV.querySelector('input[id="tvgtsoi"]').checked = false;
		contentTV.querySelector('input[id="tvgthuocnhuom"]').checked = false;
		contentTV.querySelector('input[id="tvgtcongdungkhac"]').checked = false;
		
		$(contentTV.querySelector('div[id="imaTV"]')).children().remove();
		$(contentTV.querySelector('div[id="imaTV"]')).append('<img src= "image/' + dataTV[i][12] + '" width="100" height="130"/>');
		tvimage = dataTV[i][12];
		
		var ktgt = 0;
		for(var j = 0; j<dataTV[i][6].length; j++){
			while(j < dataTV[i][6].length && dataTV[i][6].charAt(j) != ",") j++;
			var giatri = dataTV[i][6].substring(ktgt, j);
			ktgt = j + 2;
			if(giatri == "Gỗ")contentTV.querySelector('input[id="tvgtgo"]').checked = true;
			if(giatri == "Cảnh")contentTV.querySelector('input[id="tvgtcanh"]').checked = true;
			if(giatri == "Thuốc")contentTV.querySelector('input[id="tvgtthuoc"]').checked = true;
			if(giatri == "Vật liệu xây dựng")contentTV.querySelector('input[id="tvgtvlxaydung"]').checked = true;
			if(giatri == "Thủ công mỹ nghệ")contentTV.querySelector('input[id="tvgtthucongmynghe"]').checked = true;
			if(giatri == "Ăn được")contentTV.querySelector('input[id="tvgtanduoc"]').checked = true;
			if(giatri == "Cây độc")contentTV.querySelector('input[id="tvgtcaydoc"]').checked = true;
			if(giatri == "Cho tinh dầu")contentTV.querySelector('input[id="tvgtchotinhdau"]').checked = true;
			if(giatri == "Nhựa")contentTV.querySelector('input[id="tvgtnhua"]').checked = true;
			if(giatri == "Sợi")contentTV.querySelector('input[id="tvgtsoi"]').checked = true;
			if(giatri == "Thuốc nhuộm")contentTV.querySelector('input[id="tvgthuocnhuom"]').checked = true;
			if(giatri == "Công dụng khác")contentTV.querySelector('input[id="tvgtcongdungkhac"]').checked = true;
		}
		contentTV.querySelector('textarea[id="tvdacdiem"]').value = dataTV[i][8];
		tvid = dataTV[i][11];
		valiChoiceTV = i;
		valiChoiceTVLatOld = lat;
		valiChoiceTVLongOld = long;
		
		contentTV.querySelector('input[id="bttvsua"]').style.display = '';
		contentTV.querySelector('input[id="bttvxoa"]').style.display = '';
		contentTV.style.display = '';
		infowindow = new google.maps.InfoWindow({
	             content: contentTV,
	             position : new google.maps.LatLng(lat, long),
	             maxHeight: 800
	         });
	         
	   infowindow.open(map);
	} else {
		i=1;
		while(i <= dataDV.length && dataDV[i][0] != name) i++;
		// Hien thi thong tin dong vat (name) len infobox
		if(i <= dataDV.length){
			if(checkContentDV == 0) { contentDV = document.getElementById('thongTinDV'); checkContentDV++; }
			
			contentDV.querySelector('input[id="dvloai"]').value = dataDV[i][0];
			contentDV.querySelector('input[id="dvho"]').value = dataDV[i][1];
			contentDV.querySelector('input[id="dvgioi"]').value = dataDV[i][2];
			contentDV.querySelector('input[id="dvnganh"]').value = dataDV[i][3];
			contentDV.querySelector('input[id="dvlop"]').value = dataDV[i][4];
			contentDV.querySelector('input[id="dvbo"]').value = dataDV[i][5];
			contentDV.querySelector('input[id="dvchi"]').value = dataDV[i][6];
			contentDV.querySelector('input[id="dvnstrencan"]').checked = false;
			contentDV.querySelector('input[id="dvnstrencay"]').checked = false;
			contentDV.querySelector('input[id="dvnsduoinuoc"]').checked = false;
			
			$(contentDV.querySelector('div[id="imaDV"]')).children().remove();
			$(contentDV.querySelector('div[id="imaDV"]')).append('<img src= "image/' + dataDV[i][13] + '" width="100" height="130"/>');
			dvimage = dataDV[i][13];
			
			var ktns = 0;
			for(var j = 0; j<dataDV[i][7].length; j++){
				while(j < dataDV[i][7].length && dataDV[i][7].charAt(j) != ",") j++;
				var noisong = dataDV[i][7].substring(ktns, j);
				ktns = j + 2;
				if(noisong == "Trên cạn")contentDV.querySelector('input[id="dvnstrencan"]').checked = true;
				if(noisong == "Trên cây")contentDV.querySelector('input[id="dvnstrencay"]').checked = true;
				if(noisong == "Dưới nước")contentDV.querySelector('input[id="dvnsduoinuoc"]').checked = true;
			}
			contentDV.querySelector('input[id="dvlatatude"]').value = lat;
			contentDV.querySelector('input[id="dvlongatude"]').value = long;
			contentDV.querySelector('input[id="dvthucan"]').value = dataDV[i][9];
			contentDV.querySelector('textarea[id="dvdacdiem"]').value = dataDV[i][8];
			dvid = dataDV[i][12];
			valiChoiceDV = i;
			valiChoiceDVLatOld = lat;
			valiChoiceDVLongOld = long;
			
			contentDV.querySelector('input[id="btdvsua"]').style.display = '';
			contentDV.querySelector('input[id="btdvxoa"]').style.display = '';
			contentDV.style.display = '';
			infowindow = new google.maps.InfoWindow({
		             content: contentDV,
		             position : new google.maps.LatLng(lat, long),
		             maxHeight: 800
		         });
		         
		   infowindow.open(map);
		}
		
	}
}

var tvloai;
var tvho;
var tvchieucao;
var tvduongkinh;
var tvloaisinhtruong;
var tvdangsong;
var tvdongtay;
var tvnambac;
var tvlatatude;
var tvlongatude;
var tvgtgo;
var tvgtcanh;
var tvgtthuoc;
var tvgtvlxaydung;
var tvgtthucongmynghe;
var tvgtanduoc;
var tvgtcaydoc;
var tvgtchotinhdau;
var tvgtnhua;
var tvgtsoi;
var tvgthuocnhuom;
var tvgtcongdungkhac;
var tvdacdiem;
var tvimage;

function getDataTV(){
	tvloai = contentTV.querySelector('input[id="tvloai"]').value;
	tvho = contentTV.querySelector('input[id="tvho"]').value;
	tvchieucao = contentTV.querySelector('select[id="sltvchieucao"]').options[contentTV.querySelector('select[id="sltvchieucao"]').selectedIndex].text;
	tvduongkinh = contentTV.querySelector('select[id="sltvduongkinh"]').options[contentTV.querySelector('select[id="sltvduongkinh"]').selectedIndex].text;
	tvloaisinhtruong = contentTV.querySelector('select[id="sltvloaisinhtruong"]').options[contentTV.querySelector('select[id="sltvloaisinhtruong"]').selectedIndex].text;
	tvdangsong = contentTV.querySelector('select[id="sltvdangsong"]').options[contentTV.querySelector('select[id="sltvdangsong"]').selectedIndex].text;
	tvdongtay = contentTV.querySelector('input[id="tvdongtay"]').value;
	tvnambac = contentTV.querySelector('input[id="tvnambac"]').value;
	tvlatatude = contentTV.querySelector('input[id="tvlatatude"]').value;
	tvlongatude = contentTV.querySelector('input[id="tvlongatude"]').value;
	tvgtgo = contentTV.querySelector('input[id="tvgtgo"]').checked;
	tvgtcanh = contentTV.querySelector('input[id="tvgtcanh"]').checked;
	tvgtthuoc = contentTV.querySelector('input[id="tvgtthuoc"]').checked;
	tvgtvlxaydung = contentTV.querySelector('input[id="tvgtvlxaydung"]').checked;
	tvgtthucongmynghe = contentTV.querySelector('input[id="tvgtthucongmynghe"]').checked;
	tvgtanduoc = contentTV.querySelector('input[id="tvgtanduoc"]').checked;
	tvgtcaydoc = contentTV.querySelector('input[id="tvgtcaydoc"]').checked;
	tvgtchotinhdau = contentTV.querySelector('input[id="tvgtchotinhdau"]').checked;
	tvgtnhua = contentTV.querySelector('input[id="tvgtnhua"]').checked;
	tvgtsoi = contentTV.querySelector('input[id="tvgtsoi"]').checked;
	tvgthuocnhuom = contentTV.querySelector('input[id="tvgthuocnhuom"]').checked;
	tvgtcongdungkhac = contentTV.querySelector('input[id="tvgtcongdungkhac"]').checked;
	tvdacdiem = contentTV.querySelector('textarea[id="tvdacdiem"]').value;
}

var dvloai;
var dvho;
var dvgioi;
var dvnganh;
var dvlop;
var dvbo;
var dvchi;
var dvnstrencan;
var dvnstrencay;
var dvnsduoinuoc;
var dvlatatude;
var dvlongatude;
var dvthucan;
var dvdacdiem;
var dvimage;
function getDataDV(){
	dvloai = contentDV.querySelector('input[id="dvloai"]').value;
	dvho = contentDV.querySelector('input[id="dvho"]').value;
	dvgioi = contentDV.querySelector('input[id="dvgioi"]').value;
	dvnganh = contentDV.querySelector('input[id="dvnganh"]').value;
	dvlop = contentDV.querySelector('input[id="dvlop"]').value;
	dvbo = contentDV.querySelector('input[id="dvbo"]').value;
	dvchi = contentDV.querySelector('input[id="dvchi"]').value;
	dvnstrencan = contentDV.querySelector('input[id="dvnstrencan"]').checked;
	dvnstrencay = contentDV.querySelector('input[id="dvnstrencay"]').checked;
	dvnsduoinuoc = contentDV.querySelector('input[id="dvnsduoinuoc"]').checked;
	dvlatatude = contentDV.querySelector('input[id="dvlatatude"]').value;
	dvlongatude = contentDV.querySelector('input[id="dvlongatude"]').value;
	dvthucan = contentDV.querySelector('input[id="dvthucan"]').value;
	dvdacdiem = contentDV.querySelector('textarea[id="dvdacdiem"]').value;
}

function checkDataTV(){
	var kt = 0;
	var i;
	for(i = 1; i<= dataTV.length; i++){
		if(tvlatatude == dataTV[i][10] && tvlongatude == dataTV[i][9]) break;
	}
	if(i != dataTV.length+1){
		kt = 1;
		alert("  BẠN NHẬP SAI DỮ LIỆU! \nVí trị trên bản đồ đã tồn tại");
		var r=confirm("Bạn có muốn thêm các vị trí khác?");
		var lng, lat;
		if (r==true)
		  {
			var addTV = google.maps.event.addListener(map, 'click', function(event){
			lng = event.latLng.lng();
			lat = event.latLng.lat();
			$.ajax( {
				type : "POST",
				url : "/culaocham/updateData.doo",
				data : {
					message: "them 1 ca the thuc vat",
					tvid : tvid,
					tvlatatude : lat,
					tvlongatude : lng
				},
				cache : false,
				success : function() {
				},
				error : function(e) {
					alert('Error ' + e);
				}
			});
			ajaxGetPoint("thucvat");
			addMarkerTV(lat, lng, tvloai);
			
			r=confirm("    BẠN ĐÃ THÊM THÀNH CÔNG \n Bạn có muốn thêm các vị trí khác?");
			if(r == false) google.maps.event.removeListener(addTV);
			});
		  }
		
	} else {
		for(i = 1; i<= dataTV.length; i++){
			if(tvloai == dataTV[i][0] && tvho == dataTV[i][1]) { kt = 1; break;}
			else kt = 2;
		}
		if(kt == 1){
			var tvdotanche = tvdongtay.trim() +"m, "+ tvnambac.trim() + "m";
			var tvgiatri = "";
			if(tvgtgo) tvgiatri = tvgiatri + "Gỗ, ";
			if(tvgtcanh) tvgiatri = tvgiatri + "Cảnh, ";
			if(tvgtthuoc) tvgiatri = tvgiatri + "Thuốc, ";
			if(tvgtvlxaydung) tvgiatri = tvgiatri + "Vật liệu xây dựng, ";
			if(tvgtthucongmynghe) tvgiatri = tvgiatri + "Thủ công mỹ nghệ, ";
			if(tvgtanduoc) tvgiatri = tvgiatri + "Ăn được, ";
			if(tvgtcaydoc) tvgiatri = tvgiatri + "Cây độc, ";
			if(tvgtchotinhdau) tvgiatri = tvgiatri + "Cho tinh dầu, ";
			if(tvgtnhua) tvgiatri = tvgiatri + "Nhựa, ";
			if(tvgtsoi) tvgiatri = tvgiatri + "Sợi, ";
			if(tvgthuocnhuom) tvgiatri = tvgiatri + "Thuốc nhuộm, ";
			if(tvgtcongdungkhac) tvgiatri = tvgiatri + "Công dụng khác, ";
			var dangsong = dataTV[valiChoiceTV][7];
			if(dataTV[valiChoiceTV][7] == null) dangsong = "null";
			
			if(tvchieucao == dataTV[valiChoiceTV][2] && tvduongkinh == dataTV[valiChoiceTV][3] && tvloaisinhtruong == dataTV[valiChoiceTV][5] && tvdangsong == dangsong && tvdotanche == dataTV[valiChoiceTV][4] && tvgiatri == dataTV[valiChoiceTV][6] && tvdacdiem == dataTV[valiChoiceTV][8]){
				kt = 3;
			} else {
				kt = 0;
			}
		}
	}
	
	return kt;
}

function checkDataDV(){
	var kt = 0;
	var i;
	for(i = 1; i<= dataDV.length; i++){
		if(dvlatatude == dataDV[i][11] && dvlongatude == dataDV[i][10]) break;
	}
	if(i != dataDV.length+1){
		kt = 1;
		alert("  BẠN NHẬP SAI DỮ LIỆU! \nVí trị trên bản đồ đã tồn tại");
		var r=confirm("Bạn có muốn thêm các vị trí khác?");
		var lng, lat;
		if (r==true)
		  {
			var addDV = google.maps.event.addListener(map, 'click', function(event){
			lng = event.latLng.lng();
			lat = event.latLng.lat();
			$.ajax( {
				type : "POST",
				url : "/culaocham/updateData.doo",
				data : {
					message: "them 1 ca the dong vat",
					dvid : dvid,
					dvlatatude : lat,
					dvlongatude : lng
				},
				cache : false,
				success : function() {
				},
				error : function(e) {
					alert('Error ' + e);
				}
			});
			ajaxGetPoint("dongvat");
			addMarkerDV(lat, lng, dvloai);
			
			r=confirm("    BẠN ĐÃ THÊM THÀNH CÔNG \n Bạn có muốn thêm các vị trí khác?");
			if(r == false) google.maps.event.removeListener(addDV);
			});
		  }
		
	} else {
		for(i = 1; i<= dataDV.length; i++){
			if(dvloai == dataDV[i][0] && dvho == dataDV[i][1]) { kt = 1; break;}
			else kt = 2;
		}
		if(kt == 1){
			var dvnoisong = "";
			if(dvnstrencan) dvnoisong = dvnoisong + "Trên cạn, ";
			if(dvnstrencay) dvnoisong = dvnoisong + "Trên cây, ";
			if(dvnsduoinuoc) dvnoisong = dvnoisong + "Dưới nước, ";
			if(dvgioi == dataDV[valiChoiceDV][2] && dvnganh == dataDV[valiChoiceDV][3] && dvlop == dataDV[valiChoiceDV][4] && dvbo == dataDV[valiChoiceDV][5] && dvchi== dataDV[valiChoiceDV][6] && dvnoisong== dataDV[valiChoiceDV][7] && dvthucan== dataDV[valiChoiceDV][9] && dvdacdiem== dataDV[valiChoiceDV][8]){
				kt = 3;
			} else {
				kt = 0;
			}
		}
	}
	return kt;
}

function themTV(){
	getDataTV();
	var kt = checkDataTV();
	if(kt == 0) alert("                BẠN NHẬP SAI DỮ LIỆU! \nCác thông tin khác \"Loài\" và \"Họ\" không được thay đổi");
	  else if (kt == 2) {
		if(tvloai == "" || tvho == "") alert("           BẠN NHẬP SAI DỮ LIỆU!\nThông tinh Loài và Họ không được để trống");
		else {
			$.ajax( {
				type : "POST",
				url : "/culaocham/updateData.doo",
				data : {
					message: "them moi thuc vat",
					tvid : tvid,
					tvloai : tvloai,
					tvho : tvho,
					tvchieucao : tvchieucao,
					tvduongkinh : tvduongkinh,
					tvloaisinhtruong : tvloaisinhtruong,
					tvdangsong : tvdangsong,
					tvdongtay : tvdongtay,
					tvnambac : tvnambac,
					tvlatatude : tvlatatude,
					tvlongatude : tvlongatude,
					tvgtgo : tvgtgo,
					tvgtcanh : tvgtcanh,
					tvgtthuoc : tvgtthuoc,
					tvgtvlxaydung : tvgtvlxaydung,
					tvgtthucongmynghe : tvgtthucongmynghe,
					tvgtanduoc : tvgtanduoc,
					tvgtcaydoc : tvgtcaydoc,
					tvgtchotinhdau : tvgtchotinhdau,
					tvgtnhua : tvgtnhua,
					tvgtsoi : tvgtsoi,
					tvgthuocnhuom : tvgthuocnhuom,
					tvgtcongdungkhac : tvgtcongdungkhac,
					tvdacdiem : tvdacdiem,
					tvimage : tvimage
				},
				cache : false,
				success : function() {
				},
				error : function(e) {
					alert('Error ' + e);
				}
			});
			alert("Bạn đã thêm thực vật mới: " + tvloai);
			ajaxGetPoint("thucvat");
			addMarkerTV(tvlatatude, tvlongatude, tvloai);
		}
		
	} else if (kt == 3) {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "them 1 ca the thuc vat",
				tvid : tvid,
				tvlatatude : tvlatatude,
				tvlongatude : tvlongatude
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		
		alert("Bạn đã thêm mới một cá thể thực vật: " + tvloai);
		ajaxGetPoint("thucvat");
		addMarkerTV(tvlatatude, tvlongatude, tvloai);
	}	
} 

function themDV(){
	getDataDV();
	var kt = checkDataDV();
	if(kt == 0) alert("                BẠN NHẬP SAI DỮ LIỆU! \nCác thông tin khác \"Loài\" và \"Họ\" không được thay đổi");
	  else if (kt == 2) {
		if(dvloai == "" || dvho == "") alert("           BẠN NHẬP SAI DỮ LIỆU!\nThông tinh Loài và Họ không được để trống");
		else {
			$.ajax({
				type : "POST",
				url : "/culaocham/updateData.doo",
				data : {
					message: "them moi dong vat",
					dvid : dvid,
					dvloai : dvloai,
					dvho : dvho,
					dvgioi : dvgioi,
					dvnganh : dvnganh,
					dvlop : dvlop,
					dvbo : dvbo,
					dvchi : dvchi,
					dvnstrencan : dvnstrencan,
					dvnstrencay : dvnstrencay,
					dvnsduoinuoc : dvnsduoinuoc,
					dvlatatude : dvlatatude,
					dvlongatude : dvlongatude,
					dvthucan : dvthucan,
					dvdacdiem : dvdacdiem,
					dvimage : dvimage
				},
				cache : false,
				success : function() {
				},
				error : function(e) {
					alert('Error ' + e);
				}
			});
			alert("Bạn đã thêm động vật mới: " + dvloai);
			ajaxGetPoint("dongvat");
			addMarkerDV(dvlatatude, dvlongatude, dvloai);
		}
		
	} else if (kt == 3) {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "them 1 ca the dong vat",
				dvid : dvid,
				dvlatatude : dvlatatude,
				dvlongatude : dvlongatude
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		alert("Bạn đã thêm mới một cá thể động vật: " + dvloai);
		ajaxGetPoint("dongvat");
		addMarkerDV(dvlatatude, dvlongatude, dvloai);
	}	
}

function xoaTV(){
	getDataTV();
	if(document.getElementById("tvxoamotcathe").checked==true) {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "xoa 1 ca the thuc vat",
				tvlatatude : tvlatatude,
				tvlongatude : tvlongatude
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		deleteOneMarkerTV(tvlatatude, tvlongatude);
		alert("Bạn đã xóa một cá thể thực vật: " + tvloai);
		ajaxGetPoint("thucvat");
	} else if (document.getElementById("tvxoaloai").checked==true) {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "xoa loai thuc vat",
				tvid : tvid
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		deleteMarkerTV(tvloai);
		alert("Bạn đã xóa các cá thể có cùng loài: " + tvloai);
		ajaxGetPoint("thucvat");
	} else {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "xoa ho thuc vat",
				tvho : tvho
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		deleteMarkerTV(tvho);
		alert("Bạn đã xóa các cá thể có cùng họ: " + tvho);
		ajaxGetPoint("thucvat");
	}
}

function xoaDV(){
	getDataDV();
	if(document.getElementById("dvxoamotcathe").checked==true) {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "xoa 1 ca the dong vat",
				dvlatatude : dvlatatude,
				dvlongatude : dvlongatude
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		deleteOneMarkerDV(dvlatatude, dvlongatude);
		alert("Bạn đã xóa một cá thể động vật: " + dvloai);
		ajaxGetPoint("dongvat");
	} else if (document.getElementById("dvxoaloai").checked==true) {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "xoa loai dong vat",
				dvid : dvid
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		deleteMarkerDV(dvloai);
		alert("Bạn đã xóa các cá thể có cùng loài: " + dvloai);
		ajaxGetPoint("dongvat");
	} else {
		$.ajax( {
			type : "POST",
			url : "/culaocham/updateData.doo",
			data : {
				message: "xoa ho dong vat",
				dvho : dvho
			},
			cache : false,
			success : function() {
			},
			error : function(e) {
				alert('Error ' + e);
			}
		});
		deleteMarkerDV(dvho);
		alert("Bạn đã xóa các cá thể có cùng họ: " + tvho);
		ajaxGetPoint("dongvat");
	}
}

function suaTV(){
	getDataTV(); 
	$.ajax( {
		type : "POST",
		url : "/culaocham/updateData.doo",
		data : {
			message: "sua thong tin thuc vat",
			tvid : tvid,
			tvloai : tvloai,
			tvho : tvho,
			tvchieucao : tvchieucao,
			tvduongkinh : tvduongkinh,
			tvloaisinhtruong : tvloaisinhtruong,
			tvdangsong : tvdangsong,
			tvdongtay : tvdongtay,
			tvnambac : tvnambac,
			tvlatatude : tvlatatude,
			tvlongatude : tvlongatude,
			tvlatatudeold : valiChoiceTVLatOld,
			tvlongatudeold : valiChoiceTVLongOld,
			tvgtgo : tvgtgo,
			tvgtcanh : tvgtcanh,
			tvgtthuoc : tvgtthuoc,
			tvgtvlxaydung : tvgtvlxaydung,
			tvgtthucongmynghe : tvgtthucongmynghe,
			tvgtanduoc : tvgtanduoc,
			tvgtcaydoc : tvgtcaydoc,
			tvgtchotinhdau : tvgtchotinhdau,
			tvgtnhua : tvgtnhua,
			tvgtsoi : tvgtsoi,
			tvgthuocnhuom : tvgthuocnhuom,
			tvgtcongdungkhac : tvgtcongdungkhac,
			tvdacdiem : tvdacdiem,
			tvimage : tvimage
		},
		cache : false,
		success : function() {
		},
		error : function(e) {
			alert('Error ' + e);
		}
	});
	alert("Bạn đã sửa thông tin thực vật: " + tvloai);
	if(tvlatatude != valiChoiceTVLatOld || tvlongatude != valiChoiceTVLongOld || tvloai != dataTV[valiChoiceTV][0]){
		deleteOneMarkerTV(valiChoiceTVLatOld, valiChoiceTVLongOld);
		addMarkerTV(tvlatatude, tvlongatude, tvloai);
	}
	ajaxGetPoint("thucvat");
}

function suaDV(){
	getDataDV();
	$.ajax( {
		type : "POST",
		url : "/culaocham/updateData.doo",
		data : {
			message: "sua thong tin dong vat",
			dvid : dvid,
			dvloai : dvloai,
			dvho : dvho,
			dvgioi : dvgioi,
			dvnganh : dvnganh,
			dvlop : dvlop,
			dvbo : dvbo,
			dvchi : dvchi,
			dvnstrencan : dvnstrencan,
			dvnstrencay : dvnstrencay,
			dvnsduoinuoc : dvnsduoinuoc,
			dvlatatude : dvlatatude,
			dvlongatude : dvlongatude,
			dvlatatudeold : valiChoiceDVLatOld,
			dvlongatudeold : valiChoiceDVLongOld,
			dvthucan : dvthucan,
			dvdacdiem : dvdacdiem,
			dvimage: dvimage
		},
		cache : false,
		success : function() {
		},
		error : function(e) {
			alert('Error ' + e);
		}
	});
	alert("Bạn đã sửa thông tin động vật: " + dvloai);
	if(dvlatatude != valiChoiceDVLatOld || dvlongatude != valiChoiceDVLongOld || dvloai != dataDV[valiChoiceDV][0]){
		deleteOneMarkerDV(valiChoiceDVLatOld, valiChoiceDVLongOld);
		addMarkerDV(dvlatatude, dvlongatude, dvloai);
	}
	ajaxGetPoint("dongvat");
}

function deleteOneMarkerTV(latatude, longatude){ 
	for(i in markersArrayTV){
		if((latatude == markersArrayTV[i].getPosition().lat()) && (longatude - markersArrayTV[i].getPosition().lng() < 0.0001 )){
			 markersArrayTV[i].setMap(null);
		}
	}
}

function deleteOneMarkerDV(latatude, longatude){
	for(i in markersArrayDV){
		if((latatude == markersArrayDV[i].getPosition().lat()) && (longatude - markersArrayDV[i].getPosition().lng() < 0.0001 )){
			 markersArrayDV[i].setMap(null);
		}
	}
}

function deleteMarkerTV(name){
	if (markersArrayTV) {
	    for (i in markersArrayTV) {
	      if(markersArrayTV[i].title == name) {
	    	  markersArrayTV[i].setMap(null);
	    	  kt = 1;
	      } else {
	    	  for(var j=1; j<=dataTV.length; j++){
	    		  if(dataTV[j][1] == name && dataTV[j][0]==markersArrayTV[i].title) markersArrayTV[i].setMap(null);
	    	  }
	      } 
	   }
	}
}
function deleteMarkerDV(name){
	if (markersArrayDV) {
	    for (i in markersArrayDV) {
	      if(markersArrayDV[i].title == name) {
	    	  markersArrayDV[i].setMap(null);
	    	  kt = 1;
	      } else {
	    	  for(var j=1; j<=dataDV.length; j++){
	    		  if(dataDV[j][1] == name && dataDV[j][0]==markersArrayDV[i].title) markersArrayDV[i].setMap(null);
	    	  }
	      } 
	   }
	}
}

function deleteAllMarkerTV(){
	if (markersArrayTV) {
	    for (i in markersArrayTV) {
	    	markersArrayTV[i].setMap(null);
	    }
	    markersArrayTV.length = 0;
	  }
}

function deleteAllMarkerDV(){
	if (markersArrayDV) {
	    for (i in markersArrayDV) {
	    	markersArrayDV[i].setMap(null);
	    }
	    markersArrayDV.length = 0;
	  }
}

//---------------------------------------them anh vao infobox---------------------------------------
function loadImaTV(){
	var filename = $('input[type=file]').val();
	tvimage = filename.substr(11);
	$('#imaTV').children().remove();
	$('#imaTV').append('<img src= "image/' + tvimage + '" width="100" height="130"/>');
}

function loadImaDV(){
	var filename = $('input[type=file]').val();
	dvimage = filename.substr(11);
	$('#imaDV').children().remove();
	$('#imaDV').append('<img src= "image/' + dvimage + '" width="100" height="130"/>');
}


//---------------------------------------chon vung hien thi thong tin--------------------------------

function getPointEventClick() { // ve vung chon len map
	kt = 2;
	 var gonOptions = {
             fillColor: '#7DFF00',
             fillOpacity: 0.4,
             strokeWeight: 0
           };
         polygon = new google.maps.Polygon(gonOptions);
         polygon.setMap(map);
         myEventListenerArea = google.maps.event.addListener(map, 'click', addLatLngChoice);
}

function addLatLngChoice(event) { //them cac su kien get latLng click vao gpath
	gpath = polygon.getPath();
	gpath.push(event.latLng); 
}

function xemVungDaChon(){
	if(gpath.length > 2){
		$.ajax({
			type : "POST",
			url : "/culaocham/getData.doo",
			data: {name: "thongKeChung", arrayChoicePolygonTV : JSON.stringify(gpath)},
			cache : false,
			dataType : "json",
			success : function(dataTable) {
				setInfoDatatableSV(dataTable);
		},
		error : function(e) {
			alert('Error ' + e);
		}
		});
		gpath.length = 0;
		google.maps.event.removeListener(myEventListenerArea);
		polygon.setMap(null);
		$("#sinhVatDialog").dialog("open");
	}
}


google.maps.event.addDomListener(window, 'load', initialize);
